
// Copyright (C) 2009-2012 Luca Piccioni
// 
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//   
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

using System;

using Derm.Render;

namespace Derm.Scene
{
	/// <summary>
	/// A camera looking at a specific position.
	/// </summary>
	/// <remarks>
	/// <para>
	/// The position of this <see cref="Camera"/> implementation is determined by its world coordinates.
	/// </para>
	/// </remarks>
	public class TargetCamera : Camera
	{
		#region Target Orienting

		/// <summary>
		/// The camera target.
		/// </summary>
		public Vertex3f Target
		{
			get { return (mTargetVector); }
			set { mTargetVector = value; }
		}

		/// <summary>
		/// The camera "up" direction.
		/// </summary>
		public Vertex3f Up
		{
			get { return (mUpVector); }
			set { mUpVector = value; }
		}

		/// <summary>
		/// Target position.
		/// </summary>
		private Vertex3f mTargetVector = new Vertex3f(0.0f, 0.0f, 0.0f);

		/// <summary>
		/// Camera up vector.
		/// </summary>
		private Vertex3f mUpVector = new Vertex3f(0.0f, 1.0f, 0.0f);

		#endregion
	}
}
